텍스트 파일에서 특정 패턴을 포함하는 줄을 출력해보자
// ## 1.3 First Implementation
// 파일을 읽어보자
// TODO: improve with Nice error reporting
let content = std::fs::read_to_string(&args.path)
.expect("could not read file"); // quit with message when error,
// 한줄씩 읽는다
for line in content.lines() {
// pattern을 포함하는 경우만 출력
if line.contains(&args.pattern) {
println!("{}", line);
}
}
// !! 파일 전체를 메모리에 올리기 떄문에 효율적인 방식은 아니다.
// read_to_string() 대신에 BufReader등을 이용하여 최적화 해보자
BufReader
을 활용하여 파일을 읽어보자.
let f = File::open(&args.path);
let f = match f {
Ok(file) => BufReader::new(file),
Err(err) => {panic!("No such file found.");}
};
// 한줄씩 읽는다
for line in f.lines() {
// pattern을 포함하는 경우만 출력
let l = line.unwrap();
if l.contains(&args.pattern) {
println!("{}", l);
}
}
[[Rust - CLI Nicer error reporting]]